package student.aistar.day12.exception;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 异常的积极处理
 */
public class ActivelyHandlerException {
    public static void main(String[] args) {
        //积极处理 - 一个异常对应catch
        InputStream in = null;
        try {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            Date date = sdf.parse("2020-09-08");

            //流也是一个比较昂贵的资源, 使用完毕之后, 需要关闭
            in = new FileInputStream("/User");
            System.out.println(in);
            in.close();
            return;
        } catch (ParseException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            //适合进行资源的关闭等一些收尾工作
            System.out.println("无论发生了说明异常, 都会执行~~~");
        }

        System.out.println("try....outer...");
        System.out.println("====jdk7.x处理方式====");

        //此处一旦发生了异常, try{} 内部下方的代码将不会执行, 进入到对应的异常类型的catch块中去执行.

        try {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            Date date = sdf.parse("2010-9-8");
            System.out.println("date: " + date);

            //流也是一个比较昂贵的资源, 使用完毕之后, 需要关闭
            in = new FileInputStream("/user");
            System.out.println("in: " + in);
        } catch (ParseException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }finally {
            System.out.println("finally");
        }
        System.out.println("===如果遇到一些不太熟悉的异常, 暂时也不知道这些异常进行哪些处理===");

        try {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            Date date = sdf.parse("2010-09-08");
            System.out.println("date" + date);

            //流也是一个比较昂贵的资源, 使用完毕之后, 需要关闭
            in = new FileInputStream("/user");
            System.out.println("in: " +in);
        }  catch (Exception e) {
            e.printStackTrace();
        }

    }
}
